main(), die den Benutzer nach der Starthöhe, dem Höhenverlust und der Höhenreserve fragt, die Funktionen aufruft und die Gleitstrecke ausgibt.assert-Statement, um sicherzustellen, dass die berechneten Gleitstrecken den erwarteten Werten entsprechen.Beispiel:
def test_negative_starthoehe():
assert berechne_gleitstrecke(-1, 1, 1) == 0
Schreiben Sie eine Funktion ist_prim, die überprüft, ob eine Zahl eine Primzahl ist. Die Funktion soll True zurückgeben, wenn die Zahl eine Primzahl ist, und False, wenn nicht.
Hinweise:
% verwendet werdenTrue für 2, 3, 5, 7 und False für 1, 4, 6, 8, 9 zurückgibt).Schreiben Sie eine Funktion, die alle Primzahlen bis zu einer gegebenen Zahl n findet und in einer Liste zurückgibt.
Hinweise:
n eine Primzahl ist.Summe der Primzahlen: Schreiben Sie eine Funktion, die die Summe aller Primzahlen bis n berechnet.
Beispiel: Für n = 10 → 2 + 3 + 5 + 7 = 17.
Primzahldifferenzen: Erstellen Sie eine Liste mit den Abständen zwischen aufeinanderfolgenden Primzahlen bis n.
Beispiel: Zwischen 2, 3, 5, 7 → Differenzen: [1, 2, 2].
Primzahlzwillinge: Finden Sie alle Primzahlzwillinge (Paare von Primzahlen, die genau 2 auseinanderliegen, z. B. (3,5), (5,7), (11,13)) bis n.
In dieser Aufgabe programmieren Sie einen Simulator für ein Würfelspiel und analysieren verschiedene Strategien.
Das Spiel „Pig“ oder „Böse Eins“:
Ihre Aufgabe: Testen Sie verschiedene Strategien durch Simulation!
Teil 1: Grundfunktionen
Schreiben Sie folgende Funktionen:
a) wuerfle():
randomb) spiele_runde(anzahl_wuerfe):
anzahl_wuerfe mal und speichert alle Würfe in einer ListeTesten Sie beide Funktionen mit random.seed für reproduzierbare Ergebnisse.
Teil 2: Strategien implementieren
Eine Strategie legt fest, wie oft man maximal würfelt, bevor man aufhört.
Schreiben Sie eine Funktion spiele_strategie(max_wuerfe, ziel_punkte):
max_wuerfe: Anzahl Würfe pro Runde (die "Strategie")ziel_punkte: Punkte, die zum Gewinnen nötig sind (z.B. 100)gesamt, zählt Runden in rundenspiele_runde(max_wuerfe) aufgesamtTesten Sie mit max_wuerfe=3 und ziel_punkte=100.
Erstellen Sie ein Struktogramm für die Funktion spiele_strategie.
Teil 3: Mehrfache Simulation
Schreiben Sie eine Funktion simuliere_strategie(max_wuerfe, ziel_punkte, anzahl_spiele):
anzahl_spiele malrandom.seed(i) vor jedem Spiel (mit i als Schleifenvariable)Führen Sie durch:
Teil 4: Statistische Auswertung
Schreiben Sie eine Funktion analysiere_strategie(runden_liste, strategie_name):
math.sqrt() für die WurzelDie Funktion analysiere_strategie gibt die Ergebnisse formatiert aus:
Strategie: [strategie_name]
Durchschnitt: X.X Runden
Min: X Runden, Max: X Runden
Standardabweichung: X.X
Analysieren Sie alle vier Strategien. Welche ist am effizientesten?
Zusatz 1: Optimale Strategie finden
Schreiben Sie eine Schleife, die alle Strategien von 1 bis 10 Würfen testet (jeweils 1000 Spiele) und die durchschnittliche Rundenanzahl in einer Liste speichert. Finden Sie die optimale Strategie (kleinste durchschnittliche Rundenanzahl).
Zusatz 2: Risiko-Analyse
Berechnen Sie für jede Strategie: Wie oft (in Prozent) wird in einer Runde eine 1 gewürfelt und damit die Runde verloren? Verwenden Sie dafür die Wahrscheinlichkeitsrechnung:
Zusatz 3: Detaillierte Ausgabe
Erweitern Sie spiele_runde() so, dass bei gesetztem optionalen Parameter debug=True jeder einzelne Wurf ausgegeben wird, z.B.: "Wurf 1: 4, Wurf 2: 6, Wurf 3: 1 → Runde verloren!"
Visualisieren Sie den zeitlichen Verlauf von Spannung und Strom an verschiedenen Wechselstromwiderständen.
Formeln:
Konstanten: V, A, Hz,
Importieren Sie matplotlib.pyplot und math.
a) Definieren Sie die Konstanten , , und .
b) Schreiben Sie zwei Funktionen spannung(t) und strom(t, phi), die die Formeln für und implementieren und jeweils einen Wert zurückgeben.
c) Erstellen Sie mit einer List Comprehension eine Liste t_werte mit 200 Intervallen von 0 bis 0.04 s (zwei Perioden).
Hinweis: Formel für den i-ten Zeitpunkt: für
Erstellen Sie einen Plot für den ohmschen Widerstand ():
a) Berechnen Sie u_werte und i_werte mit List Comprehensions, die Ihre Funktionen aufrufen.
b) Plotten Sie beide Kurven in einem Diagramm:
c) Fügen Sie hinzu: Gitter, Achsenbeschriftungen, Titel
d) Zeigen Sie den Plot an oder speichern Sie ihn.
Erstellen Sie einen Plot für eine Spule ():
a) Berechnen Sie u_werte und i_werte mit den Funktionen und der neuen Phasenverschiebung.
b) Plotten Sie beide Kurven:
c) Markieren Sie den Punkt bei s auf der Spannungskurve mit einem roten Kreis.
d) Fügen Sie Gitter, Beschriftungen und Titel hinzu.
Erstellen Sie einen Plot für einen Kondensator ():
a) Berechnen Sie u_werte und i_werte mit den Funktionen und der neuen Phasenverschiebung.
b) Plotten Sie beide Kurven:
c) Markieren Sie den Punkt bei s auf der Stromkurve mit einem schwarzen Quadrat.
d) Fügen Sie Gitter, Beschriftungen und Titel hinzu.
Zusatz 1: Erstellen Sie eine Figur mit drei Subplots (1 Zeile, 3 Spalten), die alle drei Fälle nebeneinander zeigt. Verwenden Sie plt.subplot() (-> Dokumentation).
Zusatz 2: Fügen Sie den einzelnen Plots Legenden hinzu. Verwenden Sie plt.legend() (-> Dokumentation).
Zusatz 2: Die Momentanleistung ist . Berechnen Sie und visualisieren Sie die Leistung für alle drei Fälle in separaten Plots. Was fällt bei der Spule und beim Kondensator auf?
Zusatz 3: Schreiben Sie eine Funktion plot_phasenverschiebung(phi_grad), die Spannung und Strom für eine beliebige Phasenverschiebung in Grad plottet. Testen Sie mit verschiedenen Werten.
Advent of Code ist ein Programmierwettbewerb mit täglichen Rätseln vom 1. bis 25. Dezember.
Aufgabe: Lösen Sie Day 1 in Python und zeigen Sie mir Ihren Code.
Regeln:
Sie brauchen einen Account auf adventofcode.com (Login mit GitHub, Google, etc.)
Wenn Sie fertig sind: Machen Sie mit Tag 2, 3, ... so weit wie Sie kommen!